//package org.batatasframework.support.database.metadatas;
//
//import java.sql.DatabaseMetaData;
//import java.sql.ResultSet;
//import java.util.HashMap;
//import java.util.Map;
//
//import org.batatasframework.support.database.TableInfo;
//import org.batatasframework.support.database.internal.DatabaseTableStructure;
//import org.batatasframework.support.database.jdbc.ConnectionAccessor;
//import org.springframework.util.Assert;
//
//
///**
// * 使用本框架自己的定义解析
// * @author jackson
// *
// */
//public class StandardDatabaseMetadataSources implements DatabaseMetadataResources{
//	/**
//	 * 所有的对象都共用
//	 */
//	protected final Map<String, TableMetadata> tables = new HashMap<>();
//
//	@Override
//	public void registTableMetadata(String name, TableMetadata tableMetadata) {
//		tables.put(name, tableMetadata);
//	}
//	
//	@Override
//	public TableMetadata getTableMetadata(String name) {
//		return tables.get(name);
//	}
//	
//	/**
//	 * 根据表的定义，读取表的元数据的定义
//	 */
//	@Override
//	public TableMetadata loadTableMetadata(ConnectionAccessor connectionAccessor, TableInfo tableInfo) throws Exception{
//
////		if(StringHelper.isEmpty(catalog)){
////			//使用默认的数据库名
////			catalog = conn.getCatalog();
////		}
////		if(StringHelper.isEmpty(schema)){
////			schema = conn.getSchema();
////		}
//		
//		String identifier = tableInfo.getTableName();//TableInfo.qualify(catalog, schema, table);
//		
//		TableMetadata tableMetadata = tables.get(identifier);
//		if(null != tableMetadata){
//			return tableMetadata;
//		}
//		
//		DatabaseMetaData meta = connectionAccessor.getMetaData();
////		ResultSet rs = meta.getTables(
////				tableInfo.getCatalogName(), 
////				tableInfo.getSchemaName(), 
////				tableInfo.getSourceName(), 
////				new String[] { "TABLE", "VIEW" });
//		DatabaseTableStructure databaseTableStructure = null;
//		try(ResultSet rs = meta.getTables(
//				tableInfo.getCatalogName(), 
//				tableInfo.getSchemaName(), 
//				tableInfo.getSourceName(), 
//				new String[] { "TABLE", "VIEW" })){
//			String table = tableInfo.getSourceName();
//			while ( rs.next() ) {
//				String tableName = rs.getString("TABLE_NAME");
//				if ( table.equalsIgnoreCase(tableName) ) {
//					databaseTableStructure = new DatabaseTableStructure(this, rs);
//					break;
//				}
//			}
////		}finally{
////			rs.close();
//		}
//		
//		Assert.notNull(databaseTableStructure, "找不到数据库表：" + identifier);
//		
//		databaseTableStructure.initColumns(meta);
//		tables.put(identifier, databaseTableStructure);
//		return databaseTableStructure;
//		//throw new Exception("找不到数据库表：" + identifier);
//	}
//}
